Page({
  data: {
    activeTab: 0,
    tabs: ['全部', '待确认', '制作中', '已完成', '已取消'],
    orderList: [],
    pageLoading: true,
    isLoggedIn: false,
    fromOrderSubmit: false,  // 标记是否从下单页面跳转
    forceFixPosition: false  // 用于强制修复位置的标记
  },

  onLoad: function (options) {
    // 根据传入的状态参数设置活动标签
    if (options && options.status) {
      const statusMap = {
        'all': 0,
        'pending': 1,
        'processing': 2,
        'completed': 3,
        'cancelled': 4
      };
      
      const activeTab = statusMap[options.status] || 0;
      this.setData({ activeTab });
    }
    
    // 检查是否是从下单页面跳转过来
    if (options && options.from === 'submit') {
      this.setData({ fromOrderSubmit: true });
    }
  },
  
  onShow: function() {
    // 页面显示时检查登录状态
    this.checkLoginStatus();
    
    // 修复订单列表与标签栏之间的距离问题
    this.fixScrollPosition();
  },
  
  onHide: function() {
    // 页面隐藏时重置修复标志
    this.setData({
      forceFixPosition: false
    });
  },
  
  onUnload: function() {
    // 页面卸载时清理
    this.setData({
      fromOrderSubmit: false,
      forceFixPosition: false
    });
  },
  
  onPullDownRefresh: function() {
    // 下拉刷新
    if (this.data.isLoggedIn) {
      this.getOrderList(() => {
        wx.stopPullDownRefresh();
      });
    } else {
      wx.stopPullDownRefresh();
    }
  },
  
  // 检查登录状态
  checkLoginStatus: function() {
    const app = getApp();
    const userInfo = app.globalData.userInfo;
    
    if (!userInfo) {
      // 未登录，显示未登录提示
      this.setData({
        isLoggedIn: false,
        orderList: [],
        pageLoading: false
      });
    } else {
      // 已登录，获取订单数据
      this.setData({ isLoggedIn: true });
      this.getOrderList();
    }
  },
  
  // 跳转到登录页面
  goToLogin: function() {
    const app = getApp();
    app.goToLogin('/pages/orders/orders');
  },
  
  // 切换标签
  switchTab: function(e) {
    const index = e.currentTarget.dataset.index;
    this.setData({
      activeTab: index
    });
    this.getOrderList();
  },
  
  // 获取订单列表
  getOrderList: function(callback) {
    // 显示加载状态
    this.setData({ pageLoading: true });
    
    const app = getApp();
    const userInfo = app.globalData.userInfo;
    
    // 检查是否登录
    if (!userInfo) {
      this.setData({ 
        orderList: [],
        pageLoading: false
      });
      
      if (callback) callback();
      return;
    }
    
    // 根据当前标签获取对应状态的订单
    let status = '';
    if (this.data.activeTab > 0) {
      // 前端标签映射到后端状态值
      const statusMapping = {
        1: '1', // 待确认 -> 后端待付款
        2: '2,3', // 制作中 -> 后端待发货和待收货
        3: '4,5', // 已完成 -> 后端待评价和已完成
        4: '6'  // 已取消 -> 后端已取消
      };
      status = statusMapping[this.data.activeTab];
    }
    
    // 调用API获取订单列表
    app.globalData.api.order.getList(status)
      .then(res => {
        console.log('订单列表返回:', res);
        
        // 处理订单数据中的图片URL
        const orderList = (res.results || res).map(order => {
          // 处理订单中的每个商品图片
          if (order.items && order.items.length > 0) {
            order.items = order.items.map(item => {
              if (item.food_image_url) {
                // 优先使用服务器提供的完整URL
                item.food_image = item.food_image_url;
              } else if (item.food_image) {
                item.food_image = app.globalData.api.getFullImageUrl(item.food_image);
              }
              return item;
            });
          }
          
          // 添加状态显示文本
          if (!order.status_display) {
            const statusText = {
              1: '待确认',
              2: '制作中',
              3: '制作中',
              4: '已完成',
              5: '已完成',
              6: '已取消'
            };
            order.status_display = statusText[order.status] || '未知状态';
          }
          
          return order;
        });
        
        this.setData({
          orderList: orderList,
          pageLoading: false
        });
        
        if (callback) callback();
      })
      .catch(err => {
        console.error('获取订单列表失败', err);
        this.setData({ pageLoading: false });
        
        wx.showToast({
          title: '获取订单失败',
          icon: 'none'
        });
        
        if (callback) callback();
      });
  },
  
  // 支付订单
  payOrder: function(e) {
    const orderId = e.currentTarget.dataset.id;
    wx.showToast({
      title: '模拟支付成功',
      icon: 'success',
      duration: 2000,
      success: () => {
        // 刷新订单列表
        setTimeout(() => {
          this.getOrderList();
        }, 2000);
      }
    });
  },
  
  // 确认收货
  confirmReceive: function(e) {
    const orderId = e.currentTarget.dataset.id;
    wx.showModal({
      title: '确认收货',
      content: '确认已收到商品吗？',
      success: (res) => {
        if (res.confirm) {
          wx.showToast({
            title: '确认收货成功',
            icon: 'success',
            duration: 2000,
            success: () => {
              // 刷新订单列表
              setTimeout(() => {
                this.getOrderList();
              }, 2000);
            }
          });
        }
      }
    });
  },
  
  // 评价订单
  rateOrder: function(e) {
    const orderId = e.currentTarget.dataset.id;
    wx.navigateTo({
      url: '/pages/rate/rate?id=' + orderId
    });
  },
  
  // 查看订单详情
  goToOrderDetail: function(e) {
    const orderId = e.currentTarget.dataset.id;
    wx.navigateTo({
      url: '/pages/orderDetail/orderDetail?id=' + orderId
    });
  },
  
  // 返回上一页
  goBack: function() {
    wx.navigateBack({
      delta: 1
    });
  },
  
  // 修复滚动位置
  fixScrollPosition: function() {
    // 立即执行一次滚动重置
    if (wx.pageScrollTo) {
      wx.pageScrollTo({
        scrollTop: 0,
        duration: 0
      });
    }
    
    // 先直接设置forceFixPosition为true，确保页面加载时就应用强制样式
    this.setData({ forceFixPosition: true });
    
    // 如果是从下单页面跳转过来，使用更强力的修复方式
    if (this.data.fromOrderSubmit) {
      console.log('从下单页面跳转，开始修复列表位置');
      
      // 强制页面刷新和重新布局
      wx.nextTick(() => {
        // 确保页面已渲染后再执行
        setTimeout(() => {
          // 强制设置滚动位置为顶部
          if (wx.pageScrollTo) {
            wx.pageScrollTo({
              scrollTop: 0,
              duration: 0
            });
          }
          
          // 利用微信的createSelectorQuery强制重新计算并固定位置
          try {
            const query = wx.createSelectorQuery();
            query.select('.tab-container').boundingClientRect();
            query.exec(res => {
              if (res && res[0]) {
                console.log('标签栏位置:', res[0].top);
                
                // 根据标签栏位置重新计算列表容器位置
                const tabHeight = res[0].height || 88;
                const tabTop = res[0].top;
                
                // 动态调整容器样式
                this.setData({
                  containerStyle: `top: ${tabTop + tabHeight}px !important;`
                });
              }
            });
          } catch (err) {
            console.error('查询标签栏位置失败:', err);
          }
        }, 100);
      });
    }
    
    // 设置更频繁的修复尝试
    const fixAttempts = [100, 300, 600, 1000, 1500, 2000, 3000];
    
    fixAttempts.forEach(delay => {
      setTimeout(() => {
        console.log('尝试修复位置，延迟:', delay);
        
        // 使用强制重绘方式
        if (wx.pageScrollTo) {
          wx.pageScrollTo({
            scrollTop: 0,
            duration: 0
          });
        }
        
        // 保持forceFixPosition为true
        if (!this.data.forceFixPosition) {
          this.setData({ forceFixPosition: true });
        }
      }, delay);
    });
    
    // 最终确保保持修复状态
    setTimeout(() => {
      // 保持强制修复状态不变
      this.setData({ 
        fromOrderSubmit: false,
        forceFixPosition: true  // 保持为true不变
      });
    }, 5000);
  }
}) 